GtkWidget: Add gtk_widget_reset_style().
authorCarlos Garnacho <carlosg@gnome.org>
Sat, 11 Sep 2010 10:40:31 +0000 (12:40 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:38:13 +0000 (15:38 +0100)
This function is analogous to gtk_widget_reset_rc_styles(),
updates style recursively on a widget.

gtk/gtkwidget.c
gtk/gtkwidget.h

index 91c42a0715841e84e6ddd37a204dbf5d8a90c74e..3673fea87884461eaf5e0f729ab34de750046aa1 100644 (file)
@@ -8125,17 +8125,33 @@ _gtk_widget_propagate_screen_changed (GtkWidget    *widget,
 }
 
 static void
-reset_rc_styles_recurse (GtkWidget *widget, gpointer data)
+reset_style_recurse (GtkWidget *widget, gpointer data)
 {
+  GtkStyleContext *context;
+
+#if 0
   if (widget->priv->rc_style)
     gtk_widget_reset_rc_style (widget);
+#endif
+
+  context = g_object_get_qdata (G_OBJECT (widget),
+                                quark_style_context);
+  if (context)
+    gtk_style_context_invalidate (context);
 
   if (GTK_IS_CONTAINER (widget))
     gtk_container_forall (GTK_CONTAINER (widget),
-                         reset_rc_styles_recurse,
+                         reset_style_recurse,
                          NULL);
 }
 
+void
+gtk_widget_reset_style (GtkWidget *widget)
+{
+  g_return_if_fail (GTK_IS_WIDGET (widget));
+
+  reset_style_recurse (widget, NULL);
+}
 
 /**
  * gtk_widget_reset_rc_styles:
@@ -8152,7 +8168,7 @@ gtk_widget_reset_rc_styles (GtkWidget *widget)
 {
   g_return_if_fail (GTK_IS_WIDGET (widget));
 
-  reset_rc_styles_recurse (widget, NULL);
+  reset_style_recurse (widget, NULL);
 }
 
 /**
index c247f364cd7bc24320cb4c1512a30981c2bf1b3b..125d315b7a03a7fad124cf96ded9f8abc50c83b5 100644 (file)
@@ -803,6 +803,8 @@ gchar* gtk_widget_get_composite_name        (GtkWidget      *widget);
 /* Descend recursively and set rc-style on all widgets without user styles */
 void       gtk_widget_reset_rc_styles   (GtkWidget      *widget);
 
+void       gtk_widget_reset_style       (GtkWidget      *widget);
+
 /* Push/pop pairs, to change default values upon a widget's creation.
  * This will override the values that got set by the
  * gtk_widget_set_default_* () functions.